#include <iostream>
#include <fstream>
#include <string>
#include "bundle.h"

int main(int argc, char *argv[])
{
    if (argc < 3)
    {
        std::cout << "argv[1] 是压缩包名称\n";
        std::cout << "argv[2] 是解压后的文件名称\n";
        return -1;
    }

    std::string ifilename = argv[1];        
    std::string ofilename = argv[2];

    std::ifstream ifs;
    ifs.open(ifilename,std::ios::binary);   // 打开压缩包文件
    ifs.seekg(0,std::ios::end);             // 跳转读写位置到末尾
    size_t fsize = ifs.tellg();             // 获取文件长度
    ifs.seekg(0,std::ios::beg);             // 跳转到文件起始

    std::string body;
    body.resize(fsize);                     // 调整body大小为文件大小
    ifs.read(&body[0],fsize);               // 读取文件所有数据到body
    ifs.close();

    std::string unpacked = bundle::unpack(body);    // 解压缩文件数据

    std::ofstream ofs;
    ofs.open(ofilename,std::ios::binary);           // 打开要存放被解压缩的文件数据
    ofs.write(&unpacked[0],unpacked.size());        // 将被解压缩的文件数据放入文件
    ofs.close();

    return 0;
}